隐式丢失就是指隐式绑定的函数丢失绑定对象,从而默认绑定到全局或者undefined(取决于是否使用严格模式)
为函数调用创建别名
虽然bar是obj.foo的一个引用,但是bar引用的是foo函数的本身,此时的bar()其实就是一个不带任何修饰的函数调用,所以应用了默认绑定,this为全局
1 | function foo(){ |
传入回调函数
参数传递其实就是隐式赋值。相当于var fn=obj.foo,与创建别名的结果一样,应用了默认绑定
1 | function foo(){ |
应该注意的是,return返回一个函数时,也是应用了默认绑定
1 | var a = 100 |
传入语言内置的函数
1 | function foo() { |
在JavaScript内部,内置函数setTimeout函数实现可以看作
1 | function setTimeout(fn,delay){ |
同样属于传参,应用默认绑定